import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: lishuo
 * Date: 2023-03-09
 * Time: 17:44
 */
public class OperateTest {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(111);
        list.add(222);
        list.add(333);
        list.add(444);
        list.add(555);
        System.out.println(list);
        // 设定list2->[1,2,3] 便于测试addAll()
        List<Integer> list2 = new ArrayList<>();
        list2.add(1);
        list2.add(2);
        list2.add(3);
        // 末尾插入list2
        list.addAll(list2);
        System.out.println(list);

        // 获取list中有效元素个数
        System.out.println(list.size());

        // 获取和设置index位置上的元素，注意index必须介于[0, size)间
        System.out.println(list.get(0));
        list.set(0, 999);
        System.out.println(list.get(0));

        // 在list的index位置插入指定元素，index及后续的元素统一往后搬移一个位置
        list.add(1, 888);
        System.out.println(list);

        // 删除指定元素，找到了就删除，该元素之后的元素统一往前搬移一个位置
        // (这里如果直接写444会默认下标，需要使用引用类型)
        list.remove(new Integer(444));
        System.out.println(list);

        // 删除list中index位置上的元素，注意index不要超过list中有效元素个数,否则会抛出下标越界异常
        list.remove(list.size()-1);
        System.out.println(list);

        // 检测list中是否包含指定元素，包含返回true，否则返回false
        if(!list.contains(123456)){
            list.add(123456);
            System.out.println(list);
        }
        // 查找指定元素第一次出现的位置：indexOf从前往后找，lastIndexOf从后往前找
        System.out.println(list.indexOf(333));
        System.out.println(list.lastIndexOf(333));

        // 使用list中[0, 4)之间的元素构成一个新的SubList返回,
        // 但是和ArrayList共用一个elementData数组(对任一部分修改会影响整个部分)
        List<Integer> ret = list.subList(0, 2);
        System.out.println(ret);

//        // 清空
//        list.clear();
//        System.out.println(list.size());


    }
}
